onkeltortyfandomcom_de-20200213-history
Mathematik/Trigonometrie
Trigonometrie Der Begriff "Trigonometrie" kommt aus dem griechischen und lässt sich im ungefähren mit "Dreiecksbemessung" übersetzen. Es wird hier unterschieden in * planer Trigonometrie, welche sich mit ** dem rechtwinkligen Dreieck und dem ** allgemeinem Dreieck (ohne rechten Winkel) sowie der * sphärischen Trigonometrie, welche sich mit Kugeldreiecken befasst. Das Thema Kugeldreieck wird in diesem Abschnitt nicht behandelt. Winkelfunktionen im rechtwinkligen Dreieck 400px Definitionen der Dreieckselemente Wie in der obigen Abbildung zu sehen ist, besteht das Dreieck aus *3 Winkeln (rechter Winkel, Winkel \alpha und Winkel \beta ), *3 Seiten und *3 Eckpunkten. Die Seiten werden (aus der Sicht des Winkels \alpha ) wie folgt bezeichnet: * Die Strecke \overline{AB} , welche hier rot markiert ist, bezeichnet man als Ankathete. Diese wird so bezeichnet, weil sie an dem ersten Winkel \alpha an'''liegt. * Die Strecke \overline{BC} , welche hier '''grün markiert ist, bezeichnet man als Gegenkathete. Diese wird so bezeichnet, da sie gegenüber dem ersten Winkel \alpha ist. * Die Strecke \overline{CA} , welche hier blau markiert ist, bezeichnet man als Hypothenuse. Diese ist die längste Strecke und befindet sich gegenüber dem rechten Winkel. Die Bezeichnung kann ungefähr übersetzt werden mit "sich unten erstreckende Seite". Aus der Sicht des Winkels \beta wäre die Strecke \overline{BC} die Ankathete (da diese am Winkel anliegt) und die Strecke \overline{AB} die Gegenkathete (da diese gegenüber dem Winkel liegt). Die Hypothenuse ist bei beiden Winkeln gleich. Definitionen der Winkelfunktionen Sinus und Kosinus Der Sinus eines Winkels beschreibt das Verhältnis der Länge der Gegenkathete des Winkels zur Länge der Hypothenuse. Daher ergibt sich folgende Formel: : \text{Sinus eines Winkels} = \frac{\text{Gegenkathete des Winkels}}{\text{Hypotenuse}} Aus dieser Regel lassen sich folgende Funktionen ableiten: : \sin \alpha = \frac{\text{Gegenkathete von }\alpha}{\text{Hypothenuse}} = \frac{a}{c} = \cos \beta : \sin \beta= \frac{\text{Ankathete von }\alpha}{\text{Hypothenuse}} = \frac{b}{c} = \cos \alpha Der Kosinus eines Winkels beschreibt das Verhältnis der Länge der Ankathete des Winkels zur Länge der Hypothenuse. Daher ergibt sich folgende Formel: : \text{Kosinus eines Winkels} = \frac{\text{Ankathete des Winkels}}{\text{Hypotenuse}} Aus dieser Regel lassen sich folgende Funktionen ableiten: : \cos \alpha = \frac{\text{Ankathete von }\alpha}{\text{Hypothenuse}} = \frac{b}{c} = \sin \beta : \cos \beta= \frac{\text{Gegenkathete von }\alpha}{\text{Hypothenuse}} = \frac{a}{c} = \sin \alpha Übung zum Sinus Herr A. geht aus seinem Haus 15 Meter zu Herrn B. und besucht diesen. Nachdem er bei Herrn B. war, macht er noch einen Abstecher zu Herrn C, wobei er 50 Meter zurücklegt. Da er danach sehr müde ist, geht er auf direktem Weg wieder nach Hause. Aufgaben: #Wie weit war der Rückweg des Herrn C ? #In welchem Winkel ging Herr A. zum Haus von Herrn C. ? #Um wieviel Grad muss Herr C. den Kopf drehen, um seinen Blick vom Haus des Herrn A. auf das Haus des Herrn C. zu richten ? 400px Lösung: #Hierzu stellt man den Satz des Pythagoras nach b um: b=\sqrt{c^2 - a^2} =\sqrt{(50 \cdot 50) - (15 \cdot 15)} = \sqrt{2275} = 47,7 \text{m} # \sin \beta = \frac{b}{c} = \frac{47,7}{50} = 0,954 \rightarrow \arcsin(0,954) = 72,55\circ Um den Sinuswert 0,954 in eine Gradzahl umzuwandeln, verwendet man die Funktion Arcussinus, welche die Taste , + oder auf dem Taschenrechner hat. Alternativ kann man auch die C++-Funktion asin aus der Headerdatei math.h verwenden oder man sieht sich unten die Erklärung zum Arkussinus an. # \sin \alpha = \frac{a}{c} = \frac{15}{50} = 0,3 \rightarrow \arcsin(0,3) = 17,45\circ Nun können wir noch unser Ergebnis kontrollieren (Summe aller Winkel muss 180° ergeben): : \alpha = 17,45\circ + \beta = 72,55\circ + 90 \circ = 180\circ Es besteht auch die Möglichkeit, die Aufgaben mittels des Kosinus zu lösen: # (Die Lösung bleibt gleich). # \cos \beta = \frac{a}{c} = \frac{15}{50} = 0,3 \rightarrow \arccos(0,3) = 72,55\circ Um den Cosinuswert von 0,3 in eine Gradzahl umzuwandeln, verwendet man die Funktion Arcuscosinus, welche die Taste , + oder auf dem Taschenrechner hat. Alternativ kann man auch die Funktion acos aus der Headerdatei math.h verwenden oder man sieht sich unten die Erklärung zum Arkuskosinus an. # \cos \alpha = \frac{b}{c} = \frac{47,7}{50} = 0,954 \rightarrow \arccos(0,954) = 17,45\circ Tangens und Cotangens Der Tangens '''eines Winkels beschreibt das Verhältnis der Länge seiner Gegenkathete zu seiner Ankathete. Der '''Kotangens eines Winkels beschreibt das Vehältnis der Länge seiner Ankathete zu seiner Gegenkathete. Daraus lassen sich folgende Formeln ableiten: \tan \alpha = \frac{Gegenkathete}{Ankathete} = \frac{a}{b} = \frac{\sin \alpha}{\cos \alpha} \cot \alpha = \frac{Ankathete}{Gegenkathete} = \frac{b}{a} = \frac{\cos \alpha}{\sin \alpha} Dies lässt sich anhand der obigen Übungsaufgabe beweisen: Wir wissen von obiger Aufgabe, dass \sin \alpha = 0,3 und dass \cos \alpha = 0,954 . Teilt man diese nun laut dem Verhältnis von Tangens, so kommen wir zu : \frac{\sin \alpha}{\cos \alpha} = \frac{0,3}{0,954} = 0,314465408\ldots Unser Tangens lautet: : \tan \alpha = \frac{a}{b} = \frac{15}{47,7} = 0,314465408\ldots Somit ist die Richtigkeit der Verhältnisse bestätigt. Für den Kotangens gilt (laut obiger Aufgabe): : \sin \alpha = 0,3 : \cos \alpha = 0,954 : \frac{\cos\alpha}{\sin \alpha} = \frac{0,954}{0,3} = 3,18 : \cot \alpha = \frac{b}{a} = \frac{47,7}{15} = 3,18 Durch die Tangens- bzw. Kotangenswerte ist es uns ebenfalls möglich, obige Aufgabe zu lösen, da wir die Funktion Arkustangens und Arkuskotangens verwenden können. : \arctan \alpha = \arctan(0,314465408) = 17,45\circ : \arctan \beta= \arctan(3,18) = 72,55\circ Verwendet man den Arkuskotangens, so verwendet man die Formel: : \arccot \alpha = \arctan(\frac{1}{\beta}) : \arccot \beta= \arctan(\frac{1}{\alpha}) Somit rechnet man: : \arccot \alpha = \arctan(\frac{1}{3,18}) = \arctan(0,314465408) = 17,45\circ : \arccot \beta= \arctan(\frac{1}{0,314465408}) = \arctan(3,18) = 72,55\circ Winkelfunktionen im allgemeinen Dreieck 100px (in Bearbeitung ...) Sinussatz : \frac{a}{\sin \alpha} = \frac{b}{\sin \beta} = \frac{c}{\sin \gamma} Stellt man diesen um, so kann man die Seitenlängen / Winkel eines Dreiecks damit berechnen: Kosinussatz : c^2 = a^2 + b^2 - 2 \cdot a \cdot b \cdot \cos \gamma Entsprechend gilt : b^2 = a^2 + c^2 - 2 \cdot a \cdot c \cdot \cos \beta : a^2 = b^2 + c^2 - 2 \cdot b \cdot c \cdot \cos \alpha Tangenssatz : \frac{b+c}{b-c} = \frac{\tan \frac{\beta + \gamma}{2}}{\tan \frac{\beta - \gamma}{2}} Die inversen Winkelfunktionen Arkussinus Wollen wir aus einem Sinus-Wert eine Gradzahl erhalten, so müssen wir #zuerst den vorhandenen Sinus-Wert durch eine Ableitung einer Taylor-Reihe in das Bogenmaß umrechnen und #anschließend das Bogenmaß in das Gradmaß umwandeln. Die Entwicklung der Taylorreihe kann bis zum Unendlichen fortgesetzt werden. Folgende Taylor-Reihe rechnet bis zum 6ten Grad: : \arcsin(x)=x+\frac{1}{2}\cdot\frac{x^3}{3}+\frac{1 \cdot 3}{2 \cdot 4} \cdot \frac{x^5}{5} + \frac{1 \cdot 3 \cdot 5}{2 \cdot 4 \cdot 6} \cdot \frac{x^7}{7} + \frac{1 \cdot 3 \cdot 5 \cdot 7}{2 \cdot 4 \cdot 6 \cdot 8} \cdot \frac{x^9}{9} + :::::: \frac{1 \cdot 3 \cdot 5 \cdot 7 \cdot 9}{2 \cdot 4 \cdot 6 \cdot 8 \cdot 10} \cdot \frac{x^{11}}{11} + \frac{1 \cdot 3 \cdot 5 \cdot 7 \cdot 9 \cdot 11}{2 \cdot 4 \cdot 6 \cdot 8 \cdot 10 \cdot 12} \cdot \frac{x^{13}}{13} + \ldots :Diese Reihe kann man runter kürzen auf: : \arcsin(x)=x+\frac{1}{6} \cdot x^3 + \frac{3}{40} \cdot x^5 + \frac{5}{112} \cdot x^7 + \frac{35}{1152} \cdot x^9 + :::::: \frac{63}{2816} \cdot x^{11} + \frac{10395}{46080} \cdot x^{13} + \ldots Berechnet man nun für obige Aufgabe den Arcussinus für den Winkel \beta , so verwendet man \arcsin(x) , wobei x = 0,954 und erhält als Ergebnis der Taylor-Reihe das Ergebnis \arcsin(0,954)= 1,2663064001 , was unseren Winkel im Bogenmaß darstellt. Da ein voller Bogen im Bogenmaß 2 \cdot \pi darstellt, berechnen wir das Bogenmaß mit der Formel : \alpha^{Grad}=\frac{2 \cdot \pi \cdot \arcsin(x)}{360} \rightarrow = \arcsin(x) \cdot \frac{180}{\pi} , was uns zu : \alpha^{Grad} =\frac{2 \cdot 3,1415926535 \cdot 1,2663064001}{360} = 72,5540122963 \circ \approx 72,55\circ führt. Arkuskosinus Die Definition für den Arkuskosinus lautet: : \arccos(x)=\frac{\pi}{2} - x -\frac{1}{2}\cdot\frac{x^3}{3}-\frac{1 \cdot 3}{2 \cdot 4} \cdot \frac{x^5}{5} - \frac{1 \cdot 3 \cdot 5}{2 \cdot 4 \cdot 6} \cdot \frac{x^7}{7} - \frac{1 \cdot 3 \cdot 5 \cdot 7}{2 \cdot 4 \cdot 6 \cdot 8} \cdot \frac{x^9}{9} - ::::: \frac{1 \cdot 3 \cdot 5 \cdot 7 \cdot 9}{2 \cdot 4 \cdot 6 \cdot 8 \cdot 10} \cdot \frac{x^{11}}{11} - \frac{1 \cdot 3 \cdot 5 \cdot 7 \cdot 9 \cdot 11}{2 \cdot 4 \cdot 6 \cdot 8 \cdot 10 \cdot 12} \cdot \frac{x^{13}}{13}+\ldots Dies lässt sich verkürzen auf : \arccos(x)=\frac{1}{2}\cdot \pi - x -\frac{1}{6}\cdot x^3-\frac{3}{40}\cdot x^5 - \frac{5}{112}\cdot x^7 - \frac{35}{1152} \cdot x^9 - \frac{63}{2816} \cdot x^{11} - \ldots Arkustangens Der Arkustangens wird wie folgt definiert: : \arctan(x)= x - \frac{1}{3}\cdot x^3 + \frac{1}{5} \cdot x^5 - \frac{1}{7} \cdot x^7 + \frac{1}{9}\cdot x^9 - \frac{1}{11}\cdot x^{11} + \frac{1}{13}\cdot x^{13} - \ldots Arkuskotangens Der Arkuskotangens wird wie folgt definiert: : \arccot(x) = \frac{\pi}{2} - x + \frac{1}{3}\cdot x^3 - \frac{1}{5} \cdot x^5 + \frac{1}{7} \cdot x^7 - \frac{1}{9}\cdot x^9 + \frac{1}{11}\cdot x^{11} - \frac{1}{13}\cdot x^{13} + \ldots Programmiertechnische Lösungen Will / muss man ohne die Headerdatei auskommen, so steht man vor dem Problem, keine vordefinierten Funktionen zur Berechnung der trigonometrischen Werte zur Hand zu haben. Um dies zu lösen, benötigt man 3 Funktionen: *Funktion zum Umwandeln einer Exponentialzahl in eine reele Zahl *Funktion zum Errechnen einer Doppelfakultät *Funktion zum Umwandeln eines Sinuswertes in ein Bogenmaß ( hier z. B. der Arkussinus). Exponent umrechnen in reele Zahl Die Umrechnung einer Zahl und ihres Exponenten in eine reele Zahl funktioniert mit folgendem Code: //----------------------------------------- //------------ Funktion _pow -------------- //-- Zum Errechnen einer Exponentialzahl -- //----------------------------------------- double _pow(double a,double b) { //Initialisierung mit Zahl double result = a; //Multiplikation mit a bis zu (double b - 1) for (double d = 0.0; d < (b -1.0); d +=1.0) result = result * a; //Rückgabe der Ganzzahl return result; } Hier wird die Zahl zuerst mit sich selbst initialisiert und anschließend so oft mit sich selbst multipliziert, wie der Exponent es durch seinen Wert vorgibt. Errechnen der Doppelfakultät Um eine Doppelfakultät zu errechen, initialisiert man zuerst eine Variable mit dem Startwert der Doppelfakultät und merkt sich den Startwert in einer zweiten Variable. Nun erhöht man die zweite Variable um den Wert 2 und multipliziert das Zwischenergebnis damit. Ist der Schleifenzähler bis zum Exponent gelaufen, so erhält man als Ergebnis die gewünschte Doppelfakultät. Hierzu der Quellcode: //---------------------------------------- //------ Funktion Double_Factorial ------- //-- zum Errechnen einer Doppelfakultät -- //---------------------------------------- int Double_Factorial(int iStart, int iCycles) { //Initialisierung auf Basis der Fakultät int iResult = iStart; //Schleife: Multiplikation mit n-Zyklen for (int i=1; i<= iCycles; i++) { iStart += 2; iResult *= iStart; } //Rückgabe der Doppelfakultät return iResult; }; Berechnen des Arkussinus Um als Basis des Ergebnisses den Sinuswert zu setzen, initialisiert man damit eine Variable. Danach nutzt man beide obige Funktionen, um die Bestandteile der einzelnen Terme der Taylorreihe zu berechen. Über den in der Funktionsdeklaration übergebenen Variable sReihen kann man die Anzahl der Taylorreihen bestimmen, welche durchlaufen werden sollen. Ein guter Wert ist zwischen 7 und 10 Reihen, wobei ein kleinerer Wert ungenau wird und ein größerer Wert eine numerische Unsicherheit bedeutet. Der Quellcode der Funktion lautet wie folgt: //----------------------------------- //-------- Funktion arcsin ---------- //-- zum Bilden einer Taylorreihe --- //---- Rückgabewert ist Bogenmaß ---- //----------------------------------- double arcsin(double _sin, short sReihen) { double lResult = _sin; //Initialisierung mit x double lPowFactorSin = 1.0; //Faktor für Exponent von x //Durchlaufen der Taylorreihen (Doppelfakultät als Bruch mal (_sin exp x/Fakultät)) for (int i=0; i < (sReihen-1); i++) { //----------- Berechnen des Bruches als Gleitkommazahl -------------- int denominator = Double_Factorial(1,i); //Nenner int counter = Double_Factorial(2,i); //Zähler double factor = (double)denominator / (double)counter; //Bruch -> Gleitkommazahl //------------- Berechnen der Exponentialzahl von _sin lPowFactorSin += 2.0; //=3 -> =5 -> =7 -> =9 ... double powX = _pow(_sin, lPowFactorSin); //Sinuswert _sin hoch Exponent als Gleitkommawert //------------- Teilen der Exponentialzahl von _sin durch den Zähler double fracSin = powX / lPowFactorSin; //--------- Bruch * (_sin exp X / Zähler) double interim_res = factor * fracSin; //Addieren zum Ergebnis lResult += interim_res; } return lResult; }; Aus dieser Funktion lassen sich die Programmierungen der restlichen inversen trigonometrischen Funktionen ableiten. Verwenden des CORDIC - Algorithmus Es gibt weiterhin noch die Möglichkeit, den CORDIC-Algorithmus zu verwenden, um die trigonometrischen Funktionen zu verwenden. Dieser ist normalerweise Bestandteil der Hardware eines jeden Taschenrechners, jedoch gibt es auch eine Software-Lösung, welche diese Hardware emuliert. Der Quellcode, welcher von T. Brower erstellt wurde, kann hier gefunden werden. Der CORDIC-Algorithmus setzt das Verständnis von Hyperbel, oszillierenden Funktionen und die Low-Level-Funktionen der Programmiersprache C voraus. Er wird in einem separatem Artikel noch behandelt. Kategorie:Mathematik